Design and Implementation of a Compiler and Runtime System for Composite Tree Parallelism

نویسندگان

  • Mark C. Chu-Carroll
  • Lori L. Pollock
چکیده

Datatype (MAD) [Hud92], based on a functional construct called a Monad. This group has also developed a parallel programming model based on these constructs that allows explicitly parallel programs to be written that operate on these functional mutable data types [JH93]. This model uses a programming structure that is equivalent to our intermediate form to describe parallel computations in a referentially transparent, easily analyzable form. The drawback of this approach is that it requires the programmer to understand the underlying monadic formalism in order to write effective programs. The parallel mechanisms provided by this mechanism are also currently primitive message passing structures, and are difficult to assemble into high level parallel data structures. 3 The Composite Tree Model Data parallel programming languages are sequential languages that have been extended to access a parallel memory, in which parallel data structures can be stored. The conventional data parallel languages provide a parallel array data type, and a set of three basic operations that can be performed on the parallel array: selection, which produces a new parallel array from the subportion of the original array that meets some condition, mapping, which allows some primitive (usually arithmetic) operation to be performed on all elements of an array simultaneously, and reduction, which uses some arithmetic operation to combine the elements of an array into a scalar value. The basic model for our language was developed by taking the basic features of the data parallel model, and altering them in ways that make them better suited to general purpose programming on common coarse grained architectures. We make the following changes to the data parallel model: 1. Increase the granularity: Instead of using single arithmetic operations as the primitive grain of parallelism, we use entire object methods (member functions). 2. Make parallel data structures more flexible: Instead of restricting programmers to a single parallel array structure, we allow programmers to implement new parallel data structures in terms of a parallel tree abstraction. We do this by extending the standard single level host process/parallel memory model of most data parallel languages and architectures into a hierarchy. Tree structure is used, rather than a more general graph structure,

برای دانلود رایگان متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

منابع مشابه

An Estelle Compiler for Multiprocessor Platforms

EEcient implementation of communication software is of critical importance for high-speed networks. Parallelism can improve the runtime performance of implementations gained by code generation. Therefore, we h a ve modiied an existing Estelle compiler to run under OSFF1. It exploits parallelism not only in the actions of the FSMs, but also in the runtime system of the protocol stack.

متن کامل

Optimizing Task Parallelism with Library-Semantics-Aware Compilation

With the spread of parallel architectures throughout all areas of computing, task-based parallelism is an increasingly commonly employed programming paradigm, due to its ease of use and potential scalability. Since C++11, the ISO C++ language standard library includes support for task parallelism. However, existing research and implementation work in task parallelism relies almost exclusively o...

متن کامل

On the implementation of the Opus coordination language

Opus is a new programming language designed to assist in coordinating the execution of multiple, independent program modules. With the help of Opus, coarse grained task parallelism between data parallel modules can be expressed in a clean and structured way. In this paper we address the problems of how to build a compilation and runtime support system that can eeciently implement the Opus const...

متن کامل

Compiler Support for Work-Stealing Parallel Runtime Systems

Multiple programming models are emerging to address an increased need for dynamic task parallelism in multicore shared-memory multiprocessors. Examples include OpenMP 3.0, Java Concurrency Utilities, Microsoft Task Parallel Library, Intel Threading Building Blocks, Cilk, X10, Chapel, and Fortress. Scheduling algorithms based on work-stealing, as embodied in Cilk’s implementation of dynamic spaw...

متن کامل

NIP: A Parallel Object-Oriented Computational Model

Implicitly parallel programming languages place the burden of exploiting and managing parallelism upon the compiler and runtime system, rather than on the programmer. This paper describes the design of NIP, a runtime system for supporting implicit parallelism in languages which combine both functional and objectoriented programming. NIP is designed for scaleable distributed memory systems inclu...

متن کامل

ذخیره در منابع من


  با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید

عنوان ژورنال:

دوره   شماره 

صفحات  -

تاریخ انتشار 2007